FILESOFT SESSION WAITLIST — 0.1.0
Editable single-user teaching example • 26 October 2026

Open Filesoft Session Waitlist_0.1.0.fmp12 in FileMaker Pro on macOS.
Click Load examples, then use the Participant and Session pop-up menus.
The menus display names and store IDs. The two Alex Morgans are separate people.
This file starts empty and is separate from Session Capacity and Session Desk.

THE RULE
Only Registered uses a seat. Waitlisted and Cancelled do not.
Cancel keeps the record and frees any occupied seat. It never promotes anyone.
Promote next explicitly gives one available seat to the first waiting person.
Register and Restore must not bypass an existing waiting list.

S01 — FileMaker foundations: two seats.
S02 — Reporting workshop: zero capacity, closed to new registrations and waiting.
There are four fictional participants: P01/P02 Alex Morgan, P03 Sam Rivera,
and P04 Taylor Chen. Capacities are fixed for this focused exercise.

TRY THE QUEUE
1. Load examples and choose S01. Register P01, then P02.
   Expect Registered 2, Seats available 0, Waiting 0.
2. Choose P03 and click Join waitlist; then do the same for P04.
   Expect Registered 2, Waiting 2, sequence 1 for P03 and 2 for P04.
   Note their registration IDs. Join again: neither ID nor sequence changes.
3. Choose P01 and Cancel. Expect Registered 1, Seats available 1, Waiting 2.
   P03 and P04 must remain Waitlisted. Cancellation does not promote.
4. With P01 still selected, click Restore. Expect a waiting-priority message;
   P01 stays Cancelled and the vacant seat remains available.
5. Click Promote next. It uses the selected SESSION, regardless of which
   participant is selected. Expect P03 Registered, P04 still waiting,
   Registered 2, Seats available 0, Waiting 1. Select P03 to check its same ID.
6. Click Promote next again while full. Expect no change.
7. Choose P01 and Join waitlist. Its cancelled record is reused at sequence 3,
   behind P04. P01 retains its original registration ID.
8. Choose P04 and Cancel, then Join waitlist again. Expect the same ID but a
   new sequence 4; P01 is now next. Sequence numbers are saved join order,
   not continuously renumbered queue positions.
9. Cancel P02, then Promote next. Expect P01 to receive the seat, not P04.
   Select P01 and confirm its original ID. Waiting should now be 1.
10. Close normally and reopen. Load examples if necessary and reselect S01.
    Check the saved statuses, IDs, queue order and next person persist.

ALSO CHECK
- Select S02; Register, Join waitlist, Restore and Promote next must not add
  a seat or waiting entry. A missing-record Restore may explain that there is
  no saved registration. In every case the closed session stays empty.
- Repeated Register on an already registered pair keeps its ID and one seat.
- Repeated Cancel changes nothing further. Cancelling a waiter frees no seat.
- On a fresh copy, Register and Restore work when there is a vacant seat and
  no queue. Join waitlist instead directs you to Register or Restore.
- Clear choices changes only selections. Load examples preserves saved records.
- Promote next needs only a selected session; all pair-specific actions also
  need a participant. An empty waiting list produces a clear no-change message.

The four-row list describes the selected session. The separate saved-record
total includes registered, waitlisted and cancelled records across both sessions.
After promotion the selected participant is unchanged; the message names who
was promoted and the list shows the new status. Select that person to see its ID.

To restart, close the current file and extract a fresh copy from the original
ZIP. Preserve your tested copy if you want to keep its records for follow-up.

HOW IT WORKS
Participants, Sessions and Registrations hold records; Workspace supports the
interface. A stored unique participant/session PairKey prevents a second row
for the same pair. RegistrationID is a separate UUID and remains unchanged.

Join stores a numeric QueueSequence, one greater than the highest saved number
for that session. Repeat Join is a no-op. Cancel and Promote retain the previous
number; rejoining after cancellation replaces it with a new number at the back.
The active queue sorts Waitlisted records by QueueSequence, then RegistrationID
as a deterministic tie-break. It does not sort by name or rely on a timestamp.

The shared hidden Check session queue script reads capacity, counts, statuses
and sequence validity. Apply waiting-list action rechecks the relevant rules
before changes and again inside its transaction. Register, Join, Cancel,
Restore and Promote use that shared transaction owner. Errors revert the action.
The numeric sequence ceiling is 999999; the fixed examples are far below it.
Scripts, schema and the existing UI/controller folder structure are inspectable.

SCOPE AND COMPATIBILITY
Independent single-user desktop teaching file, separate from Session Desk.
No automatic promotion, email, payments, booking portal, priority tiers or
waiting-list expiry. No plug-ins, external connections or analytics.

Owner screenshots on macOS show two filled seats, ordered waiting entries,
cancellation, promotion, queue priority blocking Restore, rejoining at the back,
and a closed-session refusal. Compare IDs before and after promotion and repeat
Join in your own walkthrough; the selected article images do not show those
before-and-after checks. Screenshots do not
establish full test-checklist, minimum-version, other-platform, concurrent-client
or close/reopen coverage. Structural and package checks do not execute scripts.

Transaction steps require FileMaker Pro 19.6.1 or later. The minimum version,
Windows, Go, WebDirect and resizing behavior have not been tested. FileMaker Pro
is not included. Use your current FileMaker Pro on macOS for this desktop
teaching example. The screen retains its original LOCAL REVIEW 0.1.0 label.

Transactions and repeated checks do not establish safe hosted concurrency.
A hosted adaptation needs shared session coordination, capacity recounting and
queue-sequence allocation under that coordination, checked saves and actual
simultaneous-client tests.

This download starts empty, with unchanged native bytes from the original
review archive. Your saved walkthrough copy is separate. Close it normally
before making backups. Load examples adds missing fixtures without resetting
registrations; extract a fresh copy to start empty again.

Companion article (local review draft):
https://filesofttools.com/filemaker-session-waitlist.html
